package degsinModel;

public class FutureData implements Data {

	//真实数据
	private RealData realData;
	
	private boolean isReady = false;
	
	public RealData getRealData() {
		return realData;
	}

	/**
	 * 
	 * @ToDo: 加载数据，赋值，唤醒阻塞程序
	 * @Author:wesley
	 * @Time:2017年12月27日上午10:15:28
	 */
	public synchronized void setRealData(RealData realData) {
		if(isReady){
			return ;
		}
		isReady = true;
		this.realData = realData;
		
		//唤醒程序
		notify();
	}
	
	/**
	 *
	 *  在主运行方法中，getRequest来阻塞线程
	 * 
	 */
	@Override
	public synchronized String getRequest() {
		while (!isReady) {
			try {
				//阻塞线程，一直等待
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		return this.realData.getRequest();
	}
	
}
